Wang Haihua
🍈 🍉🍊 🍋 🍌
在机器学习中,支持向量机(support vector machine,svm,也称为支持向量网络)是一种有监督的学习模型,用于分析用于分类和回归分析的数据。支持向量机(SVM)是一种由分离超平面定义的判别分类器。换句话说,给定标记训练数据(监督学习),该算法输出一个最佳超平面,用于对新示例进行分类。
支持向量机模型将示例表示为空间中的点,通过映射,使不同类别的示例被一个尽可能宽的明显差距分隔开来。除了线性分类以外,svm还可以高效地执行非线性分类,隐式地将它们的输入映射到高维特征空间。
假设有数据表示为二维平面上的点: 那我们可以有如下多条直线作为分类器进行类别划分:
直观上,支持向量机就是可以找到最适合将两类或多类数据进行分割的直线或超平面。
参考资料
# importing scikit learn with make_blobs
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# creating datasets X containing n_samples
# Y containing two classes
X, Y = make_blobs(n_samples=500, centers=2,
random_state=0, cluster_std=0.40)
import matplotlib.pyplot as plt
# plotting scatters
plt.scatter(X[:, 0], X[:, 1], c=Y, s=50, cmap='spring');
plt.savefig('images/pred0801.png')
plt.show()
# creating linspace between -1 to 3.5
xfit = np.linspace(-1, 3.5)
# plotting scatter
plt.scatter(X[:, 0], X[:, 1], c=Y, s=50, cmap='spring')
# plot a line between the different sets of data
for m, b, d in [(1, 0.65, 0.33), (0.5, 1.6, 0.55), (-0.2, 2.9, 0.2)]:
yfit = m * xfit + b
plt.plot(xfit, yfit, '-k')
plt.fill_between(xfit, yfit - d, yfit + d, edgecolor='none',color='#AAAAAA', alpha=0.4)
plt.xlim(-1, 3.5);
plt.savefig('images/pred0802.png')
plt.show()